// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../SQLStatementImpl.h"

class SQLCommitStatement : public SQLStatementImpl
{
public:
  // oracle
  BOOL_ptr write;
  BOOL_ptr wait;
  BOOL_ptr immediate;

  // mysql
  BOOL_ptr work;
  BOOL_ptr chain;
  BOOL_ptr release;

  // sql server
  SQLExpr_ptr transactionName;
  SQLExpr_ptr delayedDurability;

  SQLCommitStatement();
  SHAREDOBJECT(SQLCommitStatement);

  SQLObject_ptr clone();

  void accept0(SQLASTVisitor_ptr visitor);

  // oracle
  BOOL_ptr isWrite();

  void setWrite(BOOL_ptr write);

  BOOL_ptr getWait();

  void setWait(BOOL_ptr wait);

  BOOL_ptr getImmediate();

  void setImmediate(BOOL_ptr immediate);

  // mysql
  BOOL_ptr getChain();

  void setChain(BOOL_ptr chain);

  BOOL_ptr getRelease();

  void setRelease(BOOL_ptr release);

  BOOL_ptr isWork();

  void setWork(BOOL_ptr work);

  // sql server
  SQLExpr_ptr getTransactionName();

  void setTransactionName(SQLExpr_ptr transactionName);

  SQLExpr_ptr getDelayedDurability();

  void setDelayedDurability(SQLExpr_ptr delayedDurability);
};
